Creating and Styling UI Containers in Flutter
In Flutter, containers are commonly used to create structured sections of an application interface. A Container can control size, spacing, alignment, background colors, borders, rounded corners, gradients, shadows, images, and other visual properties around a child widget.
Flutter's official documentation describes Container as a convenience widget that combines common painting, positioning, and sizing functionality. Flutter documentation also demonstrates using Container with padding, margins, borders, background colors, and BoxDecoration. Flutter Container API
1. What is a UI Container?
A UI container is an area of the interface used to group, position, space, or visually style one or more widgets. In Flutter, the Container widget is frequently used for this purpose.
A Container accepts a single direct child, but that child can itself be a Row, Column, Stack, or another widget tree.
Container(
child: Text('Hello Flutter'),
)
Simple Container
Container(
width: 250,
height: 120,
color: Colors.blue,
child: const Center(
child: Text(
'Hello Flutter',
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
)
2. Why Use Containers in UI Design?
- To create visual sections.
- To control width and height.
- To add internal spacing with padding.
- To add external spacing with margin.
- To apply background colors.
- To create borders and rounded corners.
- To create shadows and card-style designs.
- To apply gradients.
- To display background images.
- To align content.
- To create reusable UI components.
- To build responsive layouts when combined with appropriate constraints.
3. Basic Container Structure
Container(
width: 300,
height: 150,
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.all(10),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(15),
),
child: const Text(
'Styled Container',
style: TextStyle(
color: Colors.white,
),
),
)
Important Properties
| Property | Purpose |
| child | Places a widget inside the Container. |
| width | Defines the preferred width. |
| height | Defines the preferred height. |
| color | Applies a simple solid background color. |
| padding | Adds space inside the Container. |
| margin | Adds space outside the Container. |
| alignment | Positions the child inside the Container. |
| decoration | Provides advanced styling such as borders, gradients and shadows. |
| constraints | Controls minimum and maximum dimensions. |
| transform | Applies a transformation to the Container. |
| clipBehavior | Controls clipping behavior when applicable. |
These properties are part of Flutter's current Container API. View Container constructor documentation
4. Understanding Container Layout
A Container participates in Flutter's constraint-based layout system. Its final size depends on the constraints supplied by its parent, its child, explicit width and height, padding, margin, and other configuration.
In general, Container attempts to honor alignment, size itself around its child, honor explicit width and height or constraints, expand when appropriate, or become as small as possible depending on the available constraints.
Container(
width: 200,
height: 100,
color: Colors.blue,
child: const Text('Fixed Size'),
)
Understanding parent constraints is important when creating reliable Flutter layouts. Flutter Layout Documentation
5. Styling Containers with Background Colors
The simplest way to style a Container is by using the color property.
Container(
width: 250,
height: 100,
color: Colors.blue,
child: const Center(
child: Text(
'Blue Container',
style: TextStyle(
color: Colors.white,
fontSize: 18,
),
),
),
)
Using Different Colors
Container(
color: Colors.red,
child: const Text('Red'),
)
Container(
color: Colors.green,
child: const Text('Green'),
)
Container(
color: Colors.orange,
child: const Text('Orange'),
)
6. Padding in UI Containers
Padding creates space between the Container's decoration and its child.
Container(
padding: const EdgeInsets.all(20),
color: Colors.blue,
child: const Text(
'Content with internal spacing',
style: TextStyle(
color: Colors.white,
),
),
)
All-Sides Padding
padding: const EdgeInsets.all(20)
Horizontal and Vertical Padding
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 10,
)
Individual Padding
padding: const EdgeInsets.only(
left: 20,
top: 10,
right: 20,
bottom: 10,
)
7. Margin in UI Containers
Margin creates empty space around the outside of the Container.
Container(
margin: const EdgeInsets.all(20),
color: Colors.blue,
child: const Text(
'Container with margin',
style: TextStyle(
color: Colors.white,
),
),
)
Padding vs Margin
| Padding | Margin |
| Space inside the Container. | Space outside the Container. |
| Separates child content from decoration. | Separates the Container from surrounding widgets. |
| Useful for internal UI spacing. | Useful for external UI spacing. |
8. Creating Rounded UI Containers
Rounded corners are commonly created using BoxDecoration and BorderRadius.
Container(
width: 300,
height: 150,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(20),
),
child: const Center(
child: Text(
'Rounded Container',
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
)
Individual Corner Radius
Container(
decoration: BoxDecoration(
color: Colors.purple,
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
bottomLeft: Radius.circular(5),
bottomRight: Radius.circular(5),
),
),
child: const Text('Custom Corners'),
)
9. Creating Borders
Use Border.all() inside BoxDecoration to create a border around a Container.
Container(
width: 300,
height: 120,
decoration: BoxDecoration(
border: Border.all(
color: Colors.blue,
width: 2,
),
),
child: const Center(
child: Text('Bordered Container'),
),
)
Rounded Border
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.blue,
width: 2,
),
borderRadius: BorderRadius.circular(15),
),
child: const Padding(
padding: EdgeInsets.all(20),
child: Text('Rounded Border'),
),
)
10. Styling Different Border Sides
Flutter also allows individual border sides to be customized.
Container(
decoration: const BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.blue,
width: 3,
),
bottom: BorderSide(
color: Colors.red,
width: 3,
),
),
),
child: const Padding(
padding: EdgeInsets.all(20),
child: Text('Custom Borders'),
),
)
11. Adding Box Shadows
Box shadows help create visual depth and are frequently used for cards, panels, product boxes, dashboards, and floating sections.
Container(
width: 300,
height: 150,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
spreadRadius: 2,
offset: const Offset(0, 5),
),
],
),
child: const Center(
child: Text('Shadow Card'),
),
)
BoxShadow Properties
| Property | Description |
| color | Defines the shadow color. |
| blurRadius | Controls the softness of the shadow. |
| spreadRadius | Controls how far the shadow expands. |
| offset | Controls the horizontal and vertical position of the shadow. |
BoxDecoration supports borders, background painting, shadows, gradients and different box shapes. Flutter BoxDecoration API
12. Creating Gradient Containers
Gradients can make UI containers more visually attractive. Flutter supports linear, radial and sweep gradients.
Linear Gradient
Container(
width: 300,
height: 150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
gradient: const LinearGradient(
colors: [
Colors.blue,
Colors.purple,
],
),
),
child: const Center(
child: Text(
'Linear Gradient',
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
)
Gradient Direction
Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Colors.blue,
Colors.purple,
],
),
),
)
Radial Gradient
Container(
width: 300,
height: 200,
decoration: const BoxDecoration(
gradient: RadialGradient(
colors: [
Colors.yellow,
Colors.orange,
Colors.red,
],
),
),
)
13. Creating Image-Based Containers
A Container can use DecorationImage to display an image as part of its decoration.
Container(
width: 320,
height: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: const DecorationImage(
image: NetworkImage(
'https://example.com/image.jpg',
),
fit: BoxFit.cover,
),
),
)
Image with Overlay
Container(
width: 320,
height: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: const DecorationImage(
image: NetworkImage(
'https://example.com/image.jpg',
),
fit: BoxFit.cover,
colorFilter: ColorFilter.mode(
Colors.black54,
BlendMode.darken,
),
),
),
child: const Center(
child: Text(
'Image Overlay',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
),
)
14. Alignment Inside Containers
The alignment property determines where the child is positioned inside the Container.
Center
Container(
width: 300,
height: 150,
alignment: Alignment.center,
color: Colors.blue,
child: const Text(
'Center',
style: TextStyle(color: Colors.white),
),
)
Top Left
Container(
width: 300,
height: 150,
alignment: Alignment.topLeft,
color: Colors.blue,
child: const Text(
'Top Left',
style: TextStyle(color: Colors.white),
),
)
Bottom Right
Container(
width: 300,
height: 150,
alignment: Alignment.bottomRight,
color: Colors.blue,
child: const Text(
'Bottom Right',
style: TextStyle(color: Colors.white),
),
)
15. Creating UI Cards with Containers
Cards are one of the most common real-world applications of styled Containers.
Container(
width: 320,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(18),
boxShadow: [
BoxShadow(
color: Colors.black12,
blurRadius: 12,
offset: const Offset(0, 5),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Flutter Development',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 10),
const Text(
'Learn Flutter and build modern mobile applications.',
),
const SizedBox(height: 15),
ElevatedButton(
onPressed: () {},
child: const Text('Learn More'),
),
],
),
)
16. Creating a Profile UI Container
Container(
width: 320,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: Colors.black12,
blurRadius: 10,
offset: const Offset(0, 5),
),
],
),
child: Column(
children: [
const CircleAvatar(
radius: 45,
child: Icon(
Icons.person,
size: 50,
),
),
const SizedBox(height: 15),
const Text(
'John Doe',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 5),
const Text(
'Flutter Developer',
style: TextStyle(
color: Colors.grey,
),
),
],
),
)
17. Creating a Login UI Container
Container(
margin: const EdgeInsets.all(20),
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: Colors.black12,
blurRadius: 12,
offset: const Offset(0, 5),
),
],
),
child: Column(
children: [
const Text(
'Login',
style: TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 20),
const TextField(
decoration: InputDecoration(
labelText: 'Email',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 15),
const TextField(
obscureText: true,
decoration: InputDecoration(
labelText: 'Password',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 20),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {},
child: const Text('Login'),
),
),
],
),
)
18. Creating Dashboard Containers
Row(
children: [
Expanded(
child: Container(
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(15),
),
child: const Column(
children: [
Icon(
Icons.people,
color: Colors.white,
size: 35,
),
SizedBox(height: 10),
Text(
'1,250',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
Text(
'Users',
style: TextStyle(
color: Colors.white70,
),
),
],
),
),
),
const SizedBox(width: 15),
Expanded(
child: Container(
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.circular(15),
),
child: const Column(
children: [
Icon(
Icons.shopping_cart,
color: Colors.white,
size: 35,
),
SizedBox(height: 10),
Text(
'850',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
Text(
'Orders',
style: TextStyle(
color: Colors.white70,
),
),
],
),
),
),
],
)
19. Creating Containers Inside Row
When multiple containers are placed inside a Row, they are arranged horizontally.
Row(
children: [
Container(
width: 100,
height: 100,
color: Colors.red,
),
const SizedBox(width: 10),
Container(
width: 100,
height: 100,
color: Colors.green,
),
const SizedBox(width: 10),
Container(
width: 100,
height: 100,
color: Colors.blue,
),
],
)
20. Creating Containers Inside Column
When Containers are placed inside a Column, they are arranged vertically.
Column(
children: [
Container(
width: double.infinity,
height: 80,
color: Colors.red,
),
const SizedBox(height: 10),
Container(
width: double.infinity,
height: 80,
color: Colors.green,
),
const SizedBox(height: 10),
Container(
width: double.infinity,
height: 80,
color: Colors.blue,
),
],
)
21. Styling Containers with BoxDecoration
BoxDecoration is one of the most important tools for advanced Container styling.
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
border: Border.all(
color: Colors.blue,
width: 2,
),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
offset: const Offset(0, 5),
),
],
),
child: const Padding(
padding: EdgeInsets.all(20),
child: Text('Styled UI Container'),
),
)
BoxDecoration Can Provide
- Background color.
- Gradient.
- Border.
- Rounded corners.
- Box shadow.
- Background image.
- Circle or rectangle shape.
22. Important Rule: color vs decoration
For a simple solid background, use color. For advanced decoration, use decoration.
Simple Background
Container(
color: Colors.blue,
)
Advanced Background
Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
),
],
),
)
Flutter does not allow the color and decoration arguments to be supplied together on the same Container. If the decoration needs a background color, specify that color inside BoxDecoration. Flutter Container Constructor
23. Creating a Reusable Styled Container
When the same UI design is used multiple times, create a reusable widget instead of duplicating the entire Container code.
class CustomCard extends StatelessWidget {
final String title;
final String description;
const CustomCard({
super.key,
required this.title,
required this.description,
});
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
boxShadow: const [
BoxShadow(
color: Colors.black12,
blurRadius: 8,
offset: Offset(0, 4),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 8),
Text(description),
],
),
);
}
}
Using the Reusable Widget
Column(
children: const [
CustomCard(
title: 'Flutter',
description: 'Learn Flutter development.',
),
SizedBox(height: 15),
CustomCard(
title: 'Dart',
description: 'Learn Dart programming.',
),
],
)
24. Responsive Container Styling
Hard-coded dimensions are not always suitable for every screen. Responsive layouts can use MediaQuery, LayoutBuilder, Expanded, and flexible constraints.
Using MediaQuery
Container(
width: MediaQuery.of(context).size.width * 0.9,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(20),
),
child: const Text(
'Responsive Container',
style: TextStyle(color: Colors.white),
),
)
Using LayoutBuilder
LayoutBuilder(
builder: (context, constraints) {
return Container(
width: constraints.maxWidth * 0.9,
padding: const EdgeInsets.all(20),
color: Colors.blue,
child: const Text(
'Responsive UI',
style: TextStyle(color: Colors.white),
),
);
},
)
25. Creating a Notification Container
Container(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 12,
),
decoration: BoxDecoration(
color: Colors.green.shade50,
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: Colors.green,
),
),
child: const Row(
children: [
Icon(
Icons.check_circle,
color: Colors.green,
),
SizedBox(width: 10),
Expanded(
child: Text(
'Your profile has been updated successfully.',
),
),
],
),
)
26. Creating a Price Container
Container(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 8,
),
decoration: BoxDecoration(
color: Colors.orange,
borderRadius: BorderRadius.circular(10),
),
child: const Text(
'₹999',
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
)
27. Creating a Badge Container
Container(
padding: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(20),
),
child: const Text(
'NEW',
style: TextStyle(
color: Colors.white,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
)
28. Creating a Button-Like Container
Although Flutter provides dedicated button widgets, a Container can be useful for understanding how custom UI surfaces are constructed.
Container(
padding: const EdgeInsets.symmetric(
horizontal: 30,
vertical: 15,
),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(30),
),
child: const Text(
'Get Started',
style: TextStyle(
color: Colors.white,
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
)
For interactive controls, prefer Flutter's semantic button widgets such as ElevatedButton, TextButton, or IconButton when appropriate.
29. Creating a Section Container
Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 30,
),
color: Colors.grey.shade100,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Popular Courses',
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 10),
const Text(
'Explore courses designed to improve your development skills.',
),
],
),
)
30. Creating a Complete Product Container
Container(
width: 320,
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(18),
boxShadow: const [
BoxShadow(
color: Colors.black12,
blurRadius: 10,
offset: Offset(0, 5),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
height: 180,
decoration: BoxDecoration(
color: Colors.grey.shade200,
borderRadius: BorderRadius.circular(14),
),
child: const Icon(
Icons.shopping_bag,
size: 80,
color: Colors.blue,
),
),
const SizedBox(height: 15),
const Text(
'Flutter Product',
style: TextStyle(
fontSize: 21,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 5),
const Text(
'Professional Flutter development product.',
style: TextStyle(
color: Colors.grey,
),
),
const SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text(
'₹999',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.circular(20),
),
child: const Text(
'Available',
style: TextStyle(
color: Colors.white,
),
),
),
],
),
],
),
)
31. Container with Constraints
Use BoxConstraints when you want to control minimum and maximum dimensions.
Container(
constraints: const BoxConstraints(
minWidth: 150,
maxWidth: 400,
minHeight: 100,
maxHeight: 300,
),
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(15),
),
child: const Text(
'Container with constraints',
style: TextStyle(
color: Colors.white,
),
),
)
32. Container with Transform
The transform property can apply transformations to the Container during painting.
Container(
width: 150,
height: 100,
color: Colors.blue,
transform: Matrix4.rotationZ(0.1),
child: const Center(
child: Text(
'Rotated',
style: TextStyle(
color: Colors.white,
),
),
),
)
33. Creating a Complete Styled UI Example
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('Styled Containers'),
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
children: [
Container(
width: double.infinity,
padding: const EdgeInsets.all(24),
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [
Colors.blue,
Colors.purple,
],
),
borderRadius: BorderRadius.circular(20),
boxShadow: const [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
offset: Offset(0, 5),
),
],
),
child: const Column(
children: [
Icon(
Icons.flutter_dash,
color: Colors.white,
size: 60,
),
SizedBox(height: 15),
Text(
'Flutter UI Design',
style: TextStyle(
color: Colors.white,
fontSize: 26,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 8),
Text(
'Create beautiful application interfaces using Flutter.',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white70,
fontSize: 15,
),
),
],
),
),
const SizedBox(height: 20),
Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(18),
border: Border.all(
color: Colors.grey.shade300,
),
),
child: const Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Learn Flutter',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 10),
Text(
'Practice Container styling with padding, borders, shadows, gradients and responsive layouts.',
),
],
),
),
],
),
),
),
);
}
}
34. Common Mistakes While Styling Containers
Mistake 1: Using Too Many Containers
Do not create unnecessary nested Containers when a simpler widget can solve the problem.
Mistake 2: Confusing Padding and Margin
Remember that padding creates internal spacing while margin creates external spacing.
Mistake 3: Ignoring Parent Constraints
A Container does not operate independently. Its size is affected by constraints provided by its parent.
Mistake 4: Using Fixed Width Everywhere
A fixed width may work on one device but create layout problems on smaller screens. Consider flexible sizing when appropriate.
Mistake 5: Using Container for Simple Spacing
For simple spacing, SizedBox is often more appropriate.
const SizedBox(height: 20)
Mistake 6: Using color with decoration
Do not provide both color and decoration to the same Container. Put the background color inside BoxDecoration when using decoration.
35. Best Practices for UI Container Styling
- Use Container when you need its combination of layout and decoration capabilities.
- Use
SizedBox for simple fixed spacing.
- Use
Padding when only internal spacing is required.
- Use
BoxDecoration for advanced visual styling.
- Use rounded corners consistently throughout the application's design system.
- Use shadows carefully instead of adding heavy shadows to every component.
- Use reusable custom widgets for repeated container designs.
- Prefer responsive sizing when supporting different screen sizes.
- Use
const for static widgets where possible.
- Keep the widget tree readable and avoid unnecessary nesting.
- Choose semantic interactive widgets instead of manually creating interactive controls from Containers.
36. Real-World Applications of Styled Containers
| UI Component | Common Container Styling |
| Profile Card | Padding, border radius, shadow |
| Product Card | Image, padding, border radius, shadow |
| Login Box | Padding, margin, background, shadow |
| Dashboard Card | Color, gradient, padding, alignment |
| Notification | Color, border, padding, rounded corners |
| Banner | Gradient, image, overlay, rounded corners |
| Price Badge | Background, padding, border radius |
| Content Section | Background, padding, responsive width |
37. Container Styling Workflow
- Decide what content the container will hold.
- Choose the required width and height behavior.
- Add padding for internal spacing.
- Add margin for external spacing.
- Choose a background color or decoration.
- Add border radius when needed.
- Add borders when required.
- Add shadows carefully.
- Use gradients or images for advanced visual designs.
- Check the layout on different screen sizes.
- Convert repeated designs into reusable widgets.
38. Interview Questions
Q1. What is a Container in Flutter?
Container is a convenience widget used to combine common sizing, positioning, spacing and painting features around a child.
Q2. How do you add padding to a Container?
Container(
padding: const EdgeInsets.all(20),
child: const Text('Content'),
)
Q3. How do you add margin?
Container(
margin: const EdgeInsets.all(20),
)
Q4. How do you create rounded corners?
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
),
)
Q5. How do you add a border?
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.blue,
width: 2,
),
),
)
Q6. How do you add a shadow?
Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 10,
),
],
),
)
Q7. What is BoxDecoration?
BoxDecoration describes how a box should be painted and can provide features such as color, gradients, borders, border radius, images and shadows.
Q8. Can a Container have multiple direct children?
No. Container has one child property. If multiple widgets are needed, place a Row, Column, Stack or another multi-child widget inside the Container.
Q9. What is the difference between color and decoration?
color provides a simple solid background. decoration provides advanced styling and can include a background color through BoxDecoration.
39. Practice Exercises
- Create a 250x150 blue Container with centered white text.
- Create a Container with 20 pixels of padding.
- Create a Container with 15 pixels of margin.
- Create a rounded profile card.
- Create a product card with a shadow.
- Create a gradient Container with white text.
- Create a Container with a custom border.
- Create a notification Container with an icon and message.
- Create a dashboard with four styled Containers.
- Create a responsive Container using MediaQuery.
- Create a reusable CustomCard widget.
- Create a login form inside a styled Container.
40. Quick Revision
| Concept | Example |
| Background | color: Colors.blue |
| Padding | padding: EdgeInsets.all(20) |
| Margin | margin: EdgeInsets.all(20) |
| Alignment | alignment: Alignment.center |
| Border | Border.all() |
| Rounded Corners | BorderRadius.circular(20) |
| Shadow | BoxShadow() |
| Gradient | LinearGradient() |
| Image | DecorationImage() |
| Constraints | BoxConstraints() |
| Responsive Width | MediaQuery.of(context).size.width |
41. Learning Resources
For structured Flutter training covering widgets, layouts, UI design and responsive design, explore the JustAcademy Flutter Training course:
JustAcademy Flutter Training
For course demo registration:
Register for Course Demo
JustAcademy's Flutter curriculum includes Container among the core layout widgets and also covers styling widgets, responsive UI and UI design topics. View Flutter Training Curriculum :contentReference[oaicite:0]{index=0}
For official Flutter UI and layout documentation:
Flutter UI Documentation
Flutter Layout Documentation
42. Final Summary
Creating and styling UI containers is an essential Flutter skill because Containers are frequently used to structure and visually organize application interfaces. A well-designed Container can combine spacing, sizing, alignment and decoration to create cards, banners, profile sections, forms, dashboards, notifications and product components.
The key concepts are:
- Container: Provides a convenient way to combine sizing, positioning, spacing and painting.
- Padding: Creates internal spacing.
- Margin: Creates external spacing.
- Color: Adds a simple solid background.
- BoxDecoration: Enables advanced styling.
- Border: Defines the outline of a container.
- BorderRadius: Creates rounded corners.
- BoxShadow: Adds depth and elevation-like visual effects.
- Gradient: Creates modern background effects.
- DecorationImage: Allows images to be used as part of the decoration.
- Alignment: Controls child positioning.
- Constraints: Help control the Container's dimensions.
- Responsive design: Uses flexible sizing and layout constraints to adapt UI to different screens.